package A1_栈和队列;

import java.util.Stack;

public class LC_150逆波兰表达式求值 {
    public static void main(String[] args){
        String[] tokens={"2","1","+","3","*"};
        System.out.println(evalRPN(tokens));
    }
    public static int evalRPN(String[] tokens) {
        Stack<Integer> st=new Stack<>();
        for(int i=0;i<tokens.length;i++){
            //if(tokens[i]=="+"||tokens[i]=="-"||tokens[i]=="*"||tokens[i]=="/")
            //注意，此处用==力扣编译器会报错，显示异常，用equals更为准确
            if(tokens[i].equals("+")||tokens[i].equals("-")||tokens[i].equals("*")||tokens[i].equals("/")){
                int nums1=st.pop();
                int nums2=st.pop();
                if(tokens[i].equals("+"))
                    st.push(nums2+nums1);
                else if(tokens[i].equals("-"))
                    st.push(nums2-nums1);
                else if(tokens[i].equals("*"))
                    st.push(nums2*nums1);
                else
                    st.push(nums2/nums1);
            }
            else
                st.push(Integer.valueOf(tokens[i]));
        }
        return st.pop();
    }
}
